import { createApp } from 'vue'
// import './style.css'
import App from './App.vue'
import router from './routers/index'
import rules from './routers/rules'
import Vant from 'vant'
// 引入UI框架和样式
import 'vant/lib/index.css';
//引入自定义工具包
import tools from './services/tools'

import request from './services/request'
//pinia 状态管理进行挂载
import { createPinia } from 'pinia'//引入pinia
import piniaPluginPersist from 'pinia-plugin-persist'//引入pinia数据持久化插件
import store from './store/index'

import vue3videoPlay from "vue3-video-play"; // 引入组件
import "vue3-video-play/dist/style.css"; // 引入css
var app = createApp(App)
    .use(router)
    .use(request) // request -> install
    .use(Vant)
    .use(createPinia().use(piniaPluginPersist)) //状态管理
    .use(store)
    .use(vue3videoPlay)
    .use(tools)
    .mount('#app')

//利用路由守卫来实现 对异常登录的处理
router.beforeEach(async (to,from)=>{
    //to 这个参数代表 去到哪个路由
    //from 这个参数代表 从哪里来
    //next 这个参数代表 是否可以去到下一步
    //我们可以根据to当中是否有meta信息来判断当前的路由是否需要登录
    //这个就是我们常见的判断是否有登录
    //axios处理
    // to.path 获取路由地址
    // //如果规则在里面就不需要登录
    if(rules.includes(to.path)) return true

    let {id,mobile} = app.$business.value;

    var result = await app.$POST(
        {
            url:'/business/check',
            params:{id,mobile}
        }
    )
    if(!result) return false
    //异常登录需要重置缓存 存在的话就需要覆盖缓存即可
    if(result.code==0){
        app.$store.$reset();
        //重置缓存
        app.$fail(result.msg);
        
        //跳转到登录页面
        return {path:'/business/login'}
    }

    // 重新覆盖值
    app.$business.value = result.data;
    //允许通过
    return true
})
